home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Tech Arsenal 1
/
Tech Arsenal (Arsenal Computer).ISO
/
tek-01
/
strlib.zip
/
STRREV.C
< prev
next >
Wrap
Text File
|
1993-01-04
|
1KB
|
42 lines
/* File : strrev.c
Author : Richard A. O'Keefe.
Updated: 1 June 1984
Defines: strrev()
strrev(dst, src)
copies all the characters of src to dst, in REVERSE order. Dst is
properly terminated with a NUL character. There is no result.
Example: strrev(x, "able was I er") moves "re I saw elba" to x.
Note: this function is perfectly happy to reverse a string into the
same place, strrev(x, x) will work. That is why it looks so hairy.
It will not work for partially overlapping source and destination.
*/
#include "strings.h"
void strrev(dsta, srca)
register char *dsta, *srca;
{
register char *dstz, *srcz;
register int t; /* should be char */
for (srcz = srca; *srcz++; ) ;
srcz--;
dstz = dsta+(srcz-srca);
/* Now srcz points to the NUL terminating src,
and dstz points to where the terminating NUL for dst belongs.
*/
*dstz = NUL;
while (srcz > srca) {
/* This is guaranteed safe by K&R, since srcz and srca
point "into the same array".
*/
t = *--srcz;
*--dstz = *srca++;
*dsta++ = t;
}
}